Feat/nav2 preset - #3
Merged
Merged
Conversation
`rosmac sim nav2-diffbot`: Gazebo diffbot + gpu_lidar + slam_toolbox + Nav2 (벽 아레나), 맥에서 /navigate_to_pose goal 3/3 SUCCEEDED. 97 tests, ruff/mypy clean. 프리셋별 브리지 스코핑 (KI-30 대응): - Preset.bridge_allow (6 allow 카테고리). None이면 무스코프(기존 소형 프리셋 유지). - bridge_scope_config(): 미지정 카테고리 빈목록(deny) 명시로 "전부 허용" 누출 차단, doctor C8 왕복 토픽 /rosmac/doctor/* 상시 주입. - sim start: config·systemd 드롭인을 파일 push(셸 이스케이프 회피) → VM 브리지 스코핑 재기동 + 맥 브리지 리셋. sim stop: 드롭인 제거 → 무스코프 복원(멱등). 자산: nav2-diffbot.yaml(+bridge_allow), nav2_world.sdf(gpu_lidar+벽 아레나), nav2-diffbot.launch.py(gz+bridge+static_tf+slam+nav2 단계 기동), slam_params.yaml, layouts/nav2.json. viz --layout nav2. 유닛 4종 추가. 문서: README(en/ko) 프리셋·능력 매트릭스·구조적 한계, workflow(en/ko) Nav2 절, CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
S0 실측: 촘촘한 타이밍(slam@5, nav2@10)에서 nav2 lifecycle 활성화가 간헐 실패 (~25-30%: bt_navigator 미활성/노드 10개). gz가 벽 아레나 월드 로드 + /clock·/scan 발행을 마치기 전에 slam/nav2가 떠서 CPU 경합 + 미준비 상태로 활성화 실패. run_spike.sh 검증 타이밍(gz→8s→slam→5s→nav2) + 여유로 stagger 조정 → 연속 7회 전부 건강(11노드, nav2 7노드 active). health(/scan) 게이트 60s 내 유지. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
S0 게이트가 KI-30의 "nav2 서비스 174개 포화" 원인을 반증. 무스코프 브리지가 풀스택(서비스 155·액션 12)을 정상 라우팅하고 맥 goal 3/3 SUCCEEDED. N2/N3에서 스코핑이 통한 건 스코프 적용이 VM 브리지를 재시작한 부수효과였음. 진짜 원인 규명: 스택을 재기동해도 브리지를 켜둔 채면 죽은 스택의 라우트가 누적돼 새 스택의 액션 하위 서비스가 맥에서 디스커버리 실패(KI-17 계열). 실측: 동일 스택이 브리지 재시작 전 0/6 → 후 4/4. - sim.py: 프리셋별 스코핑 메커니즘(bridge_allow, _apply/_clear_bridge_scope, bridge_scope_config, systemd 드롭인) 제거. start()가 `_reset_bridge_session`으로 VM+맥 브리지를 리셋(rosmac up의 KI-17 방지와 동일). ~80줄 → 단순 재시작. - nav2-diffbot.yaml: bridge_allow 제거(무스코프). E2E: fresh 3/3, churn 후에도 goal 성공. - 유닛 4개(스코핑) 제거 + 무스코프 로딩 1개. 94 tests, ruff/mypy clean. - README/workflow/CHANGELOG(en/ko): "스코핑 필수" → "기본 브리지 + sim 브리지 리셋". Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
맥에서 액션 goal을 보내려면 msg 패키지(nav2_msgs 등)가 맥 conda env에도 필요한데,
없으면 goal이 "server not available"로 조용히 실패했다(health/scan은 통과해 브리지
문제로 오인). `rosmac sim`이 프리셋 `mac_env_pkgs`를 맥 env에 자동 설치.
- Preset.mac_env_pkgs 필드 + cli sim에서 설치 호출.
- deps.ensure_installed(cfg, pkgs): 기존 installed_packages/install_missing 재사용,
미설치만 설치·반환(멱등). MoveIt(moveit_msgs)도 동일 필드로 커버 가능.
- nav2-diffbot.yaml: mac_env_pkgs=[ros-humble-nav2-msgs].
- 유닛 2개(설치·멱등), nav2 프리셋 테스트에 필드 확인 추가. 96 tests, ruff/mypy clean.
- E2E: nav2-msgs 제거 → sim이 자동 설치("✓ Mac env packages installed") → READY.
- workflow(en/ko)·CHANGELOG: "수동 설치" → "sim 자동 설치".
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Usk65wXFwXBq6UgRxGn7Yi
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.